// pages/home/home.js
const request = require('../../utils/promise.js');
const baseUtil = require('../../utils/util.js');
Page({
  /**
   * 页面的初始数据
   */
  data: {
    profileUserInfo: null,
    navTop: 0,
    navHeight: 0,
    windowHeight: 0,
    phoneModal: false,
    msgCount: 0,
    htmlStr: '',
    newsArr: [],
    userModal: { // 用户弹框
      isShow: false,
      title: '',
      content: '',
    }

  },

  /**
   * 
   */
  binderror(e) {
    // console.log(e)
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

    // 胶囊按钮, 设置自定义导航栏
    const menuButton = wx.getMenuButtonBoundingClientRect();
    wx.getSystemInfo({
      success: res => {
        //console.log(res)
        const statusBarHeight = res.statusBarHeight;
        const navTop = menuButton.top; // 胶囊按钮与顶部的距离
        const navHeight = statusBarHeight + menuButton.height + (menuButton.top - statusBarHeight) * 2; // 导航高度
        
        this.setData({
          navHeight: navHeight,
          navTop: navTop,
          windowHeight: res.windowHeight
        })
      },
    })

    // 引导用户注册与完善的弹框逻辑
    this.checkUserModal();

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.checkLogin();
    this.reqTopNewsListData();
    // this.reqUserMessageCount(); 首页不显示消息 by wjc 20230506
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.reqTopNewsListData();
    // this.reqUserMessageCount(); 首页不显示消息 by wjc 20230506
    wx.stopPullDownRefresh();
  },

  /** 
   * 页面被用户分享时执行
   */ 
  onShareAppMessage() { 
     
  },
 
  /** 
   * 分享到朋友圈 
   */ 
  onShareTimeline() { 
     
  },
  /**
   * 引导用户注册与完善的弹框逻辑
   */
  checkUserModal() {
    if (!wx.getStorageSync('openId')) {
      // 未登录再次登录
      wx.login({
        success: res => {
          // 发送 res.code 到后台换取 openId，以及基础用户信息
          if (res.code) {
            request.GET("/user/onLogin/code2Session", {code: res.code}).then(res => {
              if (res.data && res.data.success) {
                wx.setStorageSync('userId', res.data.userId); // 缓存用户id，如果第一次注册是id为-1
                wx.setStorageSync('username', res.data.username); // 缓存昵称, 如果第一次注册时为空
                wx.setStorageSync('avatarUrl', res.data.avatarUrl); // 缓存用户头像, 如果第一次注册时默认灰色头像
                wx.setStorageSync('openId', res.data.openId); // 缓存用户

                this.initUserModal(res.data.isNewWXUser, res.data.username, res.data.phone);
              }
            })
          }
        }
      })
    } else {
      // 已登录，查询用户信息
      request.GET('/user/userInfo', {
        openId: wx.getStorageSync('openId')
      }).then(res => {
        let username = "";
        let phone = "";
        if (res.data.resCode == 200) {
          username = res.data.userInfo['username'];
          phone = res.data.userInfo['phone'];
        }

        this.initUserModal(res.data.isNewWXUser, username, phone);
      })
    }
  },
  initUserModal: function(isNewWXUser, username, phone) {
    if(isNewWXUser){
      // 新用户
      this.setData({
        ['userModal.isShow']: true,
        ['userModal.title']: '欢迎注册',
        ['userModal.content']: '填写基础信息，快速注册用户',
      })
    }else{
      // 老用户，查看昵称与手机号是否合格
      let isAddUsername = false;
      let isAddPhone = false;
      
      // 昵称为空或者不是中文，需要添加
      if (baseUtil.isNotChineseStr(username)) {
        isAddUsername = true;
      }
      // 昵称超过5个字符，就算是中文，也不合格
      if (username.length > 5) {
        isAddUsername = true;
      }
      // 手机号空，需要添加
      if (!phone) {
        isAddPhone = true;
      }

      let isShow = isAddUsername || isAddPhone;
      if(isShow) {
        this.setData({
          ['userModal.isShow']: true,
          ['userModal.title']: '完善用户信息',
          ['userModal.content']: '您的用户信息缺失，请进行补充',
        })
      }

    }

  },

  /**
   * 检查是否登录
   */
  checkLogin() {
    if (!wx.getStorageSync('openId')) {
      wx.login({
        success: res => {
          // 发送 res.code 到后台换取 openId，以及基础用户信息
          if (res.code) {
            request.GET("/user/onLogin/code2Session", {code: res.code}).then(res => {
              if (res.data && res.data.success) {
                wx.setStorageSync('userId', res.data.userId); // 缓存用户id，如果第一次注册是id为-1
                wx.setStorageSync('username', res.data.username); // 缓存昵称, 如果第一次注册时为空
                wx.setStorageSync('avatarUrl', res.data.avatarUrl); // 缓存用户头像, 如果第一次注册时默认灰色头像
                wx.setStorageSync('openId', res.data.openId); // 缓存用户
              }
            })
          }
        }
      })
    }
  },

  /**
   * 请求获取动态最新的 10 条
   */
  reqTopNewsListData() {
    request.GET('/news/pageList', {topNum: 10}).then(res => {
      // console.log(res)
      if (res.data.resCode==200) {
        this.setData({
          newsArr: res.data.newsArrList
        })
      } else {
        wx.showToast({
          title: '获取数据异常',
          icon: 'error'
        })
      }
    })
  },

  /**
   * 跳转动态页面
   */
  clickViewNews() {
    wx.navigateTo({
      url: '/pages/news/news',
    })
  },

  /**
   * 跳转用户列表
   */
  clickViewVIPUsers() {
    wx.navigateTo({
      url: '/pages/membership/membership',
    })
  },

  /**
   * 跳转到通知未读
   */
  gotoNotice() {
    wx.navigateTo({
      url: '/pages/notice/notice?isRead=0',
    })
  },

  /**
   * 跳转项目列表
   */
  gotoProjectList() {
    wx.navigateTo({
      url: '/pages/project_list/project_list',
    })
  },

  /**
   * 点击跳转签到
   */
  gotoWorkSigned() {
    wx.navigateTo({
      url: '/pages/signed_list/signed_list',
    })
  },

  /**
   * 点击跳转任务列表
   */
  gotoTaskList() {
    wx.navigateTo({
      url: '/pages/task/task',
    })
  },

  /**
   * 点击跳转计划
   */
  gotoMyWeeklyReport () {
    wx.navigateTo({
      url: '/pages/weekly/weekly?userId='+ wx.getStorageSync('userId')
    })
  },

  /**
   * 点击跳转财务
   */
  gotoMyFinance() {
    wx.navigateTo({
      url: '/pages/finance/finance',
    })
  },
 
  /**
   * 点击跳转答题页
   */
  gotoAnswer() {
    wx.navigateTo({
      url: '/pages/index/index?userId='+ wx.getStorageSync('userId')
    })
  },

  /**
   * 跳转动态详情页
   */
  gotoViewNewsDetail(e) {
    wx.navigateTo({
      url: '/pages/news_detail/news_detail?newsId='+ e.currentTarget.dataset.newsid,
    })
  },
  /**
   * 隐藏用户弹框
   */
  clickHideUserModal(e) {
    this.setData({
      ['userModal.isShow']: false
    })
  },
  /**
   * 跳转到我的页面
   */
  clickToMePage(e) {
    this.setData({
      ['userModal.isShow']: false
    })

    wx.switchTab({
      url: '/pages/account/account',
    })
  },
  /**
   * 请求获取通知的消息数量
   */
  reqUserMessageCount() {
    if (wx.getStorageSync('openId')) {
      request.GET('/message/unread/count', {
        openId: wx.getStorageSync('openId')
      }).then(res => {
        if (res.data.resCode == 200) {
          this.setData({
            msgCount: res.data.unreadCount,
          })
        }
      })
    }
  },

})